cordova.define("mamp-plugin-UI", function(require, exports, module) {

var exec = require('cordova/exec');

var UI = function(){};

UI.prototype.navButtonInfo = function() {
    return {
               left:{
                left1:
                {
                  title:'返回',
                  titleColor:null,
                  image:null,
                  callFunction:null
                },
               left2:
               {
                  title:'关闭',
                  titleColor:null,
                  image:null,
                  callFunction:null
                }
             },
        title:'',
        right:[{
                  title:'按钮1',
                  titleColor:null,
                  image:null,
                  callFunction:null,
                  moreBtn:false // true 右侧显示更多按钮
                },
                {
                  title:'按钮2',
                  titleColor:null,
                  image:null,
                  callFunction:null,
                  moreBtn:false // true 右侧显示更多按钮
                }],
        backgroundColor:'ffffff',//导航栏背景色
        tintColor:'000000',//标题和返回按钮颜色，除了黑就是白
        bottomLineColor:''//底部按钮颜色，如果传空表示隐藏，传值展示相应颜色，key都不带表示保存默认不变
    };
};
               
/*
 desc:设置导航栏左边按钮（多个），右边按钮（多个），中间标题
 confg:配置信息参考UI.prototype.navButtonInfo
 */
UI.prototype.setNavHeader = function(config) {
    var allBtns = [];
    var index = 0;
    var backBtn = null;
    var closeBtn = null;
    var title = config.title;
    if (config.left != null && config.left.left1 != null){
        backBtn = config.left.left1;
        backBtn.index = index++;
        allBtns.push(backBtn);
    }
    if (config.left != null && config.left.left2 != null){
        closeBtn = config.left.left2;
        closeBtn.index = index++;
        allBtns.push(closeBtn);
    }
    if(config.right != null){
        var rightBtns = config.right;
        for (var i = 0; i < rightBtns.length;i++) {
            var btnInfo = rightBtns[i];
            btnInfo.index = index++;
            allBtns.push(btnInfo);
        }
    }
    function callback(index) {
        var btnInfo = allBtns[index];
        var call = btnInfo.callFunction;
        if(call != null) {
            call();
        }
    };
    exec(callback,null,"UI","setNavHeader",[{"back":backBtn,"close":closeBtn,"title":title,"right":rightBtns,"backgroundColor":config.backgroundColor,"tintColor":config.tintColor,"bottomLineColor":config.bottomLineColor}]);
};
               
/*
 desc:设置导航栏中间标题显示文本
 text:按钮显示的标题
 */
UI.prototype.setTitleText = function(text) {
    exec(null,null,"UI","setTitleText",[text]);
};


/*
 desc:打开一个新的webView
 url:可以传递http地址或者mamp://hybrid/xxx/xxx.html?a=1&b=2
 options:可选参数
 {
  title:'',
  navBarStatus:'show',
  navBarBgColor:'08a1cd',
  statusBarTintColor:'000000'
 }
 */
UI.prototype.openWebView = function(url,options) {
    exec(null,null,"UI","openWebView",[url,options == null ? {}:options]);
};

/*
 desc:弹出一个toast框展示文本
 message:文本内容
 time:显示时长(秒)
 */
UI.prototype.showToast = function(message,time) {
   var showTime = 2;
   if(time != null){
        showTime = time;
   }
   exec(null,null,"UI","showToast",[{"message":message,"time":showTime}]);
};

/*
 desc:图片预览
 infos:[{url:'',desc:''},{url:'',desc:''}] 图片的url路径，可以是http地址或者相对路径(相对应用根路径)
 showIndex:默认展示的index项
 */
UI.prototype.preViewImages = function(infos,showIndex) {
   exec(null,null,"UI","preViewImages",[{"infos":infos,"index":showIndex}]);
};

/*
 desc:显示或者隐藏一个等待框
 showOrHide:显示或者隐藏，bool变量
 */
UI.prototype.toggleLoading = function(showOrHide) {
    exec(null,null,"UI","showLoading",[showOrHide]);
};
               
/*
 desc:编辑图片（裁剪、旋转、缩放）
 url:图片的本地路径，可以是http地址，本地相对路径(相对应用根路径),本地绝对路径
 width:需要裁剪的宽度
 height:需要裁剪的高度
 callback:编辑完成后会返回编辑完成图片的存放路径（绝对路径）
 */
UI.prototype.cropImage = function(config,callback) {
    var url = config.url;
    var width = 0;
    if(config.width != null)
    {
        width = config.width;
    }
    var height = 0;
    if(config.height != null)
    {
        height = config.height;
    }
               
   exec(callback,null,"UI","cropImage",[{"url":url,"width":width,"height":height}]);
};
               
/*
 desc:日期选择器（年月日）
 
 callback:选择完成后会返回日期的字符串信息
 defaultDate:默认选中时间(字符串)，1>> yyyy-MM-dd
 */
UI.prototype.datePicker = function(callback,defaultDate) {
    exec(callback,null,"UI","datePicker",[{type:1,defaultDate:defaultDate}]);
};
               
/*
 desc:时间选择器()
 
 callback:选择完成后会返回时间的字符串信息，HH:mm
 defaultDate:默认选中时间(字符串)，1>> HH:mm
 */
UI.prototype.timePicker = function(callback,defaultDate) {
    exec(callback,null,"UI","datePicker",[{type:3,defaultDate:defaultDate}]);
};

/*
 desc:日期时间选择器(年月日时分)
 
 callback:选择完成后会返回时间的字符串信息，yyyy-MM-dd HH:mm
 defaultDate:默认选中时间(字符串)，1>> yyyy-MM-dd HH:mm
 */
UI.prototype.dateTimePicker = function(callback,defaultDate) {
    exec(callback,null,"UI","datePicker",[{type:2,defaultDate:defaultDate}]);
};
               
               
/*
 desc:区域级联选择器(选择省)
 callback:选择完成后会返回相应的字符串
 */
UI.prototype.provincePicker = function(callback) {
    exec(callback,null,"UI","areaPicker",[1]);
};
               
/*
 desc:区域级联选择器(选择省，市)
 callback:选择完成后会返回相应的字符串
 */
UI.prototype.cityPicker = function(callback) {
    exec(callback,null,"UI","areaPicker",[2]);
};
               
/*
desc:区域级联选择器(选择省，市，区)
callback:选择完成后会返回相应的字符串
*/
UI.prototype.districtPicker = function(callback) {
    exec(callback,null,"UI","areaPicker",[3]);
};

/*
 desc:多级数据选择器,根据传递的数据列表来弹出一个选择框，用户选择完成后返回选择的index
 data:数据列表
 callback:选择完成后会返回相应的index
 */
UI.prototype.multiPicker = function(data,callback) {
   exec(callback,null,"UI","multiPicker",[data]);
};
               
/*
 desc:数据选择器,根据传递的数据列表来弹出一个选择框，用户选择完成后返回选择的index
 titles:数据列表（字符串）
 callback:选择完成后会返回相应的index
 */
UI.prototype.singleSelect = function(titles,selectIndex,callback) {
   exec(callback,null,"UI","dataPicker",[{"titles":titles,"index":selectIndex}]);
};

/*
 desc:数据选择器,根据传递的数据列表来弹出一个选择框，用户选择完成后返回选择的index列表
 dataInfos:数据列表（UI.prototype.pickData类型的对象列表）
 callback:选择完成后会返回相应的index列表
 */
UI.prototype.multiSelect = function(dataInfos,callback) {
    exec(callback,null,"UI","datasPicker",[dataInfos]);
};
               

/*
 desc:弹出一个alertView，用户点击相应按钮后回调给JS
 title:弹出框的标题
 content:弹出框的内容描述
 btnTitles:按钮标题数组，例如：['确定','取消']
 callback:选择完成后会返回相应的index
 */
UI.prototype.alertView = function(title,content,btnTitles,callback) {
   exec(callback,null,"UI","alertView",
        [{"title":title == null ? "提醒":title,
         "content":content == null ? "":content,
         "btnTitles":btnTitles == null ? ["确定","取消"]:btnTitles
         }]);
};
               
/*
 desc:弹出一个actionSheet，用户点击相应按钮后回调给JS
 title:弹出框的标题
 btnTitles:按钮标题数组，例如：['中国','日本','韩国']
 callback:选择完成后会返回相应的index
*/
UI.prototype.actionSheet = function(title,btnTitles,callback) {
   exec(callback,null,"UI","actionSheet",
        [{"title":title == null ? "":title,
        "btnTitles":btnTitles
        }]);
};
               
/*
 desc:注册一个回调函数，当再次回到当前页面时会触发该方法
 callback:再次回到当前页面触发该方法
 */
UI.prototype.webviewOnResume = function(callback) {
    exec(callback,null,"UI","webviewOnResume",[]);
};
  
/*
 desc:关闭当前页面
 */
UI.prototype.closeWebView = function() {
    exec(null,null,"UI","closeWebView",[]);
};

/*
 desc:设置状态栏背景色
 */
UI.prototype.setNavBarBgColor = function(hex) {
    exec(null,null,"UI","setNavBarBgColor",[hex]);
};

/*
 desc:设置状态栏上文本颜色
 */
UI.prototype.setStatusBarTintColor = function(hex) {
    exec(null,null,"UI","setStatusBarTintColor",[hex]);
};
/*
 * 显示或者隐藏页面标题栏
 * showOrHide:显示或者隐藏，bool变量
 */
UI.prototype.toggleNavBar = function(showOrHide) {
    exec(null,null,"UI","toggleNavBar",[showOrHide]);
};

/*
desc:开启或关闭下拉刷新组件
status:true开启，会在webview后面显示出下拉刷新组件，false下拉刷新组件隐藏
callback:当用户下拉到一定距离后会触发的方法
*/
UI.prototype.togglePullRefresh = function(status,callback){
  exec(callback,null,"UI","togglePullRefresh",[status]);
};

/*
desc:结束下拉刷新，该方法必须在开启下拉刷新之后调用
*/
UI.prototype.finishPullRefresh = function(){
  exec(null,null,"UI","finishPullRefresh",[]);
};

/*
desc:开始下拉刷新，在开启下拉刷新之后通过代码主动触发下拉刷新动画以及回调方法
*/
UI.prototype.startPullRefresh = function(){
  exec(null,null,"UI","startPullRefresh",[]);
};

/*
desc:开启或关闭上拉组件
s
01114285(邓亚锋) 02-10 13:40:02
tatus:true开启，会在webview底部显示出上拉组件，false上拉组件隐藏
callback:当用户滚动到底后自动触发的方法
desc:上拉加载时显示的文本，默认：努力加载中...
*/
UI.prototype.togglePullUp = function(status,callback,desc){
  exec(callback,null,"UI","togglePullUp",[{"status":status,"desc":desc}]);
};

/*
desc:结束上拉加载，该方法必须在开启上拉之后调用
*/
UI.prototype.finishPullUp = function(){
  exec(null,null,"UI","finishPullUp",[]);
};




/*
desc:开启或关闭下拉刷新组件
status:true开启，会在webview后面显示出下拉刷新组件，false下拉刷新组件隐藏
callback:当用户下拉到一定距离后会触发的方法
*/
UI.prototype.togglePullRefresh = function(status,callback){
  exec(callback,null,"UI","togglePullRefresh",[status]);
};

/*
desc:结束下拉刷新，该方法必须在开启下拉刷新之后调用
*/
UI.prototype.finishPullRefresh = function(){
  exec(null,null,"UI","finishPullRefresh",[]);
};

/*
desc:开始下拉刷新，在开启下拉刷新之后通过代码主动触发下拉刷新动画以及回调方法
*/
UI.prototype.startPullRefresh = function(){
  exec(null,null,"UI","startPullRefresh",[]);
};

/*
desc:开启或关闭上拉组件
tatus:true开启，会在webview底部显示出上拉组件，false上拉组件隐藏
callback:当用户滚动到底后自动触发的方法
desc:上拉加载时显示的文本，默认：努力加载中...
*/
UI.prototype.togglePullUp = function(status,callback,desc){
  exec(callback,null,"UI","togglePullUp",[{"status":status,"desc":desc}]);
};

/*
desc:结束上拉加载，该方法必须在开启上拉之后调用
*/
UI.prototype.finishPullUp = function(){
  exec(null,null,"UI","finishPullUp",[]);
};

module.exports = new UI();
});



